package com.yhsoft.common.job;

import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.yhsoft.buyer.entity.BuyerOrder;
import com.yhsoft.buyer.service.IBuyerOrderService;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;

import java.time.LocalDateTime;
import java.util.List;

/**
 * 检测订单状态
 */
@Component
public class OrderJob {
    private final Log logger = LogFactory.getLog(OrderJob.class);

    @Autowired
    private IBuyerOrderService iBuyerOrderService;

    /**
     * 自动取消订单
     * <p>
     * 定时检查订单未付款情况，如果超时10分钟则自动取消订单 定时时间是每次相隔半个小时。
     * <p>
     * 注意，因为是相隔10分钟检查，因此导致有订单是超时20分钟以后才设置取消状态。 TODO
     * 这里可以进一步地配合用户订单查询时订单未付款检查，如果订单超时则取消。
     */
    @Scheduled(fixedDelay = 10 * 60 * 1000)
    @Transactional(rollbackFor = Exception.class)
    public void checkOrderUnpaid() {
        logger.info("【系统开启任务】检查订单是否已经超期自动取消订单");
        iBuyerOrderService.checkOrderUnpaid(true);

    }


}
